import request from "@/utils/request";

const GROUP_BASE_URL = "/api/group";

class GroupAPI {
  /**
   * 获取活动分组列表
   *
   * @param queryParams 查询参数（可选）
   * @returns 活动分组树形表格数据
   */
  static getList(queryParams?: GroupQuery) {
    return request<any, GroupVO[]>({
      url: `${GROUP_BASE_URL}`,
      method: "get",
      params: queryParams,
    });
  }

  /** 获取活动分组下拉列表 */
  static getOptions(type: number = 1) {
    return request<any, OptionType[]>({
      url: `${GROUP_BASE_URL}/create`,
      method: "get",
      params: { type },
    });
  }

  /**
   * 获取活动分组表单数据
   *
   * @param id 活动分组ID
   * @returns 活动分组表单数据
   */
  static getFormData(id: number) {
    return request<any, GroupForm>({
      url: `${GROUP_BASE_URL}/${id}`,
      method: "get",
    });
  }

  /**
   * 新增活动分组
   *
   * @param data 活动分组表单数据
   * @returns 请求结果
   */
  static add(data: GroupForm) {
    return request({
      url: `${GROUP_BASE_URL}`,
      method: "post",
      data: data,
    });
  }

  /**
   * 修改活动分组
   *
   * @param id 活动分组ID
   * @param data 活动分组表单数据
   * @returns 请求结果
   */
  static update(id: number, data: GroupForm) {
    return request({
      url: `${GROUP_BASE_URL}/${id}`,
      method: "put",
      data: data,
    });
  }

  /**
   * 删除活动分组
   *
   * @param ids 活动分组ID，多个以英文逗号(,)分隔
   * @returns 请求结果
   */
  static deleteByIds(ids: string) {
    return request({
      url: `${GROUP_BASE_URL}/${ids}`,
      method: "delete",
    });
  }
}

export default GroupAPI;

/** 活动分组查询参数 */
export interface GroupQuery {
  /** 活动分组id */
  ins_id?: number;
  /** 搜索关键字 */
  keywords?: string;
  /** 登录账号 */
  account?: string;
  /** 状态 */
  status?: number;
}

/** 活动分组table字段 */
export interface GroupVO {
  /** 活动分组ID(新增不填) */
  id?: number;
  /** 活动分组名称 */
  name?: string;
  /** 所属代理id */
  agent_scope: number[];
  /** 报名开始时间 */
  apply_start: number;
  /** 报名结束时间 */
  apply_end: number;
  /** 活动分组开始时间 */
  start_time: number;
  /** 活动分组结束时间 */
  end_time: number;
  /** 是否发布成绩 */
  grade_status: number;
  /** 是否发布奖品 */
  prize_status: number;
  /** 是否未备注时间人员自动排场 */
  auto_arrange_norank: number;
  /**是否忽略期望日期进行排场**/
  ignore_date: number;
  /**是否忽略期望时间段进行排场**/
  ignore_time: number;
  /**每场同省人数限制**/
  alike_province_num: number;
  /**每场同省市人数限制**/
  alike_city_num: number;
  /**每场同机构人数限制**/
  alike_ins_num: number;
  /** 活动分组介绍 */
  introduce: string;
  /** 活动分组创建时间 */
  createTime: string;
  /** 状态(1:启用；0：禁用) */
  status?: number;
}

/** 活动分组表单类型 */
export interface GroupForm {
  /** 活动分组ID(新增不填) */
  id?: number;
  /** 活动分组名称 */
  name?: string;
  /** 所属代理id */
  agent_scope: number;
  /** 报名开始时间 */
  apply_start: number;
  /** 报名结束时间 */
  apply_end: number;
  /** 活动分组开始时间 */
  start_time: number;
  /** 活动分组结束时间 */
  end_time: number;
  /** 是否发布成绩 */
  grade_status: number;
  /** 是否发布奖品 */
  prize_status: number;
  /** 是否未备注时间人员自动排场 */
  auto_arrange_norank: number;
  /**是否忽略期望日期进行排场**/
  ignore_date: number;
  /**是否忽略期望时间段进行排场**/
  ignore_time: number;
  /**每场同省人数限制**/
  alike_province_num: number;
  /**每场同省市人数限制**/
  alike_city_num: number;
  /**每场同机构人数限制**/
  alike_ins_num: number;
  /** 活动分组介绍 */
  introduce: string;
  /** 状态(1:启用；0：禁用) */
  status?: number;
}
